1. Technical Field of the Invention
The present invention generally relates to root filesystem redundancy. More particularly, the present invention is directed to a method, system and program storage device for providing improved recovery of a root filesystem from a single disk drive in a storage subsystem having a plurality of disk drives without the added expense of providing Redundant Array of Independent Disks (i.e., xe2x80x9cRAIDxe2x80x9d) hardware support.
2. Description of the Prior Art
The ever-increasing use of information technology has spawned a greater need for vast amounts of data to be stored in an online format, readily accessible by a number of different requesters while contained in a medium that offers high security and reliability for online applications. While hard drives have proven to be a cornerstone in providing a solution to these needsxe2x80x94a sound medium that can quickly share and store dataxe2x80x94the task has proven to be too great for any single hard drive to accomplish on its own. Different systems have emerged to harness a plurality of disk drives into a so-called large virtual disk drive. That is, the different systems have united the capacity of the plurality of disk drives into a common storage subsystem, while providing for increased data reliability (i.e., fault tolerance) and fast data throughput capabilities (i.e., improved performance).
For example, a Redundant Array of Independent Disks (xe2x80x9cRAIDxe2x80x9d) is a widely utilized storage subsystem for employing a plurality of disk drives in combination (i.e., an array of disk drives) for providing fault tolerance and improved performance. The RAID array of disk drives is frequently utilized on servers, but generally is not necessary for personal computers. There are generally six different RAID levels (i.e., levels zero through five) that provide various levels of fault tolerance and performance, with levels zero, one and five being the most commonly utilized levels.
Level zero provides for data striping, i.e., spreading out blocks of each file (i.e., data) across multiple disk drives, but this level does not provide for redundancy. Since no redundant information is stored for level zero, the failure of a disk drive in the array of disk drives that includes a root filesystem (described herein below) results in storage subsystem being unbootable. Thus, level zero provides overall very good performance, but it does not deliver fault tolerance, particularly for the root filesystem. Level one provides disk mirroring, a technique for writing each file (i.e., data) to two duplicate disks simultaneously. Disk mirroring is most commonly used in an on-line database storage subsystem where it is critical that data be accessible at all times. In level one, if one of the disk drives fails, the storage subsystem can instantly switch to the other disk drive without any loss of data or service, or the system is enabled to boot from a mirrored disk drive if the other disk drive fails. Thus, level one provides performance that is the same or slightly lower than a single drive, but concurrently provides some level of fault tolerance, although with a high cost of storage (i.e., significant additional storage requirements for mirroring). Level 5, provides for data striping with distributed parity, i.e., parity being distributed over at least three operational disk drives. Thus, level 5 affords excellent performance and good fault tolerance, although adding significant costs in terms of hardware support, by requiring a plurality of operational disk drives for storing parity information. Thus, in level 5, a failure of more than one disk drive in the storage subsystem will result in the storage subsystem becoming unbootable.
Hardware-based RAID storage subsystems utilize a RAID controller board, which is a backbone hardware element for the RAID""s array of disks. It not only distributes input/output (i.e., xe2x80x9cI/Oxe2x80x9d) operations to specific disk drives in the array of disks, but it also provides a physical link to each of the independent disk drives in the array of disks so that a disk drive may easily be removed and/or replaced. The RAID controller further monitors the integrity of each disk drive in the array of disk drives to anticipate the need to move data should the array of disk drives be placed in jeopardy by a faulty or a failing disk drive, thereby providing fault tolerance, i.e., transparent recovery from disk drive failure.
Contrary to a RAID storage system that provides for hardware support for the plurality of disk drives in the storage subsystem, a storage subsystem that does not utilize hardware support (i.e., RAID controller board) utilizes device adapters (described hereinbelow) to perform input/output (i.e., xe2x80x9cI/Oxe2x80x9d) operations to the plurality of disk drives in the storage subsystem. Unlike the RAID controller board that distributes I/O operations to specific disk drives in the storage subsystem, device adapters merely relay I/O operations to specific disk drives in the storage subsystem as requested. Device adapters that may be utilized in the storage subsystem include variants of the small computer system interface (xe2x80x9cSCSIxe2x80x9d), fibre channel (xe2x80x9cFCxe2x80x9d), cabling and the like. A SCSI interface provides data transfer rates of up to 80 megabytes per second (xe2x80x9cMBpsxe2x80x9d), enabling mass storage devices (e.g., plurality of disk drives) to be attached to the single SCSI interface. FC is a serial data transfer architecture that is being standardized by the American National Standards Institute (xe2x80x9cANSIxe2x80x9d). A most prominent FC is a Fibre Channel Arbitrated Loop (i.e. xe2x80x9cFC-ALxe2x80x9d), designed for mass storage subsystems that require high bandwidth (e.g., data transfer rates of 100 MBps) by using optical fiber to connect the mass storage devices (e.g., plurality of disk drives). Cabling interface represents any bus architecture to which disk drives in the storage subsystem may physically be attached, such as SCSI cables (i.e., 68 copper wire bus architecture), FC cables (i.e., 4 copper wire or 2 fiber optic cables), SSA cables (i.e., 4 copper wires used in an SSA serial Bus architecture) and the like.
In general, a root filesystem must be as small as possible and must include sufficient information to at least boot a storage subsystem, since a corrupted root filesystem invariably makes a storage subsystem unbootable except with the use of a bootable disk, such as a floppy disk or the like. The root filesystem is included in a particularly designated partition of a disk drive, such as a root RAID partition in a RAID storage subsystem. Thus, in a storage subsystem that includes a plurality of mass storage devices (i.e., disk drives), it is advantageous and would be highly desirable to enable the storage subsystem to boot from any of the plurality of disk drives, thereby improving fault tolerance (i.e., redundancy) of the root filesystem. Although, the hardware-based RAID storage subsystem provides for root filesystem redundancy through RAID""s level 1 and level 5, as particularly described hereinabove the RAID""s root filesystem redundancy requires hardware support.
Software-based RAID storage subsystems require that a software RAID subsystem, which is necessary to manage root filesystem, be loaded and operational before it can manage the root filesystem in the RAID storage subsystem. That is, RAID configuration data for the plurality of disk drives in the storage subsystem, which is typically stored in the root filesystem, has to be obtained as part of the starting of the software RAID subsystem. Because the root filesystem must be available prior starting the software-based RAID storage subsystem, the software RAID subsystem cannot manage the root filesystem, i.e., be utilized to provide for improved recovery of the root filesystem.
Therefore there is a need in the art for providing a system and method for improved recovery of a root filesystem from a single disk drive in a storage subsystem having a plurality of disk drives without the added expense of providing RAID hardware support.
It is therefore an object of the present invention to provide a system, method and program storage device for recovery of a root filesystem for a storage subsystem without the added hardware expense of providing RAID support.
It is another object of the present invention to provide a system, method and program storage device for an improved level of root filesystem recovery over a RAID storage subsystem.
It is yet another object of the present invention to provide a system, method and program storage device for an improved level of root filesystem recovery by utilizing software techniques as compared to a RAID storage subsystem utilizing hardware support.
It is a further object of the present invention to provide a system, method and program storage device for recovery of a root filesystem from a single disk drive within a storage subsystem comprising a plurality of disk drives.
It is yet a further object of the present invention to provide a system, method and program storage device for enabling the storage subsystem to boot from a single operational disk drive within the storage subsystem comprising a plurality of disk drives, one or more of which have failed.
According to an embodiment of the present invention, there is provided a method for maintaining an active root filesystem in a storage subsystem comprising a plurality of storage devices, the method comprising: searching root partitions of the plurality of storage devices for a valid root filesystem, the root filesystem including mount points associated with the plurality of storage devices; mounting a root filesystem that is found first as the active root filesystem and mounting root partitions of the plurality of storage devices to the associated mount points within the active root filesystem; and replicating the active root filesystem across the plurality of storage devices in the storage subsystem, wherein the storage subsystem is bootable from any storage device of the plurality of storage devices that includes a replica of the active root filesystem
According to another embodiment of the present invention, there is provided a storage subsystem for maintaining an active root filesystem, the storage subsystem comprising a plurality of storage devices, the storage subsystem comprising a root filesystem manager for: searching root partitions of the plurality of storage devices for a valid root filesystem, the root filesystem including mount points associated with the plurality of storage devices; mounting a root filesystem that is found first as the active root filesystem and mounting root partitions of the plurality of storage devices to the associated mount points within the active root filesystem; and replicating the active root filesystem across the plurality of storage devices in the storage subsystem, wherein the storage subsystem is bootable from any storage device of the plurality of storage devices that includes a replica of the active root filesystem.
According to a further embodiment of the present invention, there is provided a program storage device, tangibly embodying a program of instructions executable by a machine to perform a method for maintaining an active root filesystem in a storage subsystem comprising a plurality of storage devices, the method comprising the steps of: searching root partitions of the plurality of storage devices for a valid root filesystem, the root filesystem including mount points associated with the plurality of storage devices; mounting a root filesystem that is found first as the active root filesystem and mounting root partitions of the plurality of storage devices to the associated mount points within the active root filesystem; and replicating the active root filesystem across the plurality of storage devices in the storage subsystem, wherein the storage subsystem is bootable from any storage device of the plurality of storage devices that includes a replica of the active root filesystem.